package reflect;

import java.util.Scanner;

public class ReflectDemo2 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
       //原始的实例化对象
        Person p=new Person();
        System.out.println(p);
        //用reflection来实例化对象
        /*
        1. 通过反射来获取一个类的Class对象
         */
        //Class c=Class.forName("reflect.Person");
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个类名：");
        String className=scan.nextLine();
        Class c=Class.forName(className);
        /*
        2.Class提供的newInstance()方法
        他会使用其表示的类的无参构造器来实例化一个对象，并向上造型（因为Object是所有类的父类，如果使用person类需要写一些更多的方法）
        注意：
        该类必须有无参构造器，否则会抛出异常
        java.in.FileInputStream没有无参构造器，所以会抛出异常
         */
        Object o = c.newInstance();//new Person();
        System.out.println(o);
    }
}
